/*
 * ISimpleModel.java
 *
 * Created on 28 novembre 2007, 21.19
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package treeship.core.ship;

import java.util.List;
import java.util.Map;

import treeship.core.archetype.ArchetypeProperty;
import treeship.core.archetype.ArchetypeShip;
import treeship.core.ship.space.Position;
import treeship.core.ship.space.Shape;
import treeship.core.ship.space.Speed;

/**
 * 
 * @author Moonchild
 */
public interface TreeData<T extends TreeData> {

	public List<T> getChildren();

	public Shape getShape();

	public Position getPosition();

	public T getParent();

	public List<T> getInners();

	public Map<ArchetypeProperty, Double> getProperties();

	public ArchetypeShip getArchetype();

	public String getSelfDescription();

	public Double getOtherProperty(String s);

	public boolean isTouching(TreeData other);

	public boolean isWellInsideTheSpaceOf(TreeData other);

	public Speed getSpeed();
}
